package com.xiaolin.designmode.factory.abstraction;

import com.xiaolin.designmode.factory.bean.Computer;
import com.xiaolin.designmode.factory.bean.Phone;

/**
 * @ClassName AbstractFactory
 * @Description 抽象工厂模式
 * @Detail 步骤：
 *              1、创建多个产品类型接口
 *              2、每种类型接口创建多个具体类型
 *              3、创建一个工厂接口
 *                  1、创建多个抽象方法，每个方法创建一种类型的产品
 *              4、创建多个具体工厂
 *                  1、实现工厂接口的方法
 *              5、测试
 *          总结：
 *              1、客户端与具体工厂类直接关联，如果需要扩展类型，只需要在工厂接口扩展抽象方法，然后具体工厂进行实现
 *              2、角色
 *                  1、多个产品接口
 *                  2、每个产品接口创建多个具体产品
 *                  3、一个工厂接口
 *                  4、多个具体工厂
 *                  5、一个客户端
 *              3、适用范围：
 *                  1、三层分类（一层是工厂类别（华为工厂、小米工厂）、一层是产品类型（手机、电脑）、一层是同一类型的不同产品（华为手机、小米手机））
 *                      如农场里既养动物又种植物，电器厂既生产电视机又生产洗衣机或空调
 * @Author MyPC
 * @Date 2020/7/18
 * @Version 1.0
 */
public interface AbstractFactory {
    Phone productPhone();
    Computer productComputer();
}
